iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
1
Modern Web

美麗的邂逅-與安室....伊春系列 第 25

心領神會 (JDBC)

  • 分享至 

  • xImage
  •  
信任,是溝通的母語。
  • SQL, MySQL, HeidiSQL, TablePlus
  • JDBC=Java Database Connection
  • JdbcTemplate / application.properties

MariaDB 是 MySQL 衍生,因為 Sun 入主了 MySQL,而 Oracle 又入主了 Sun,開始有了一點 “銅錢” 的味道,為了延續 “道統”,就有 MariaDB 應運而生。我們搞技術的就不管政治,就是挑一個 “開源”的道路繼續走下去,另外,一個資料庫系統通常會配合一個資料庫 “管理”軟件,方便使用,我們原本選擇開源的明星:HeidiSQL,但HeidiSQL 只有 Windows 版本,因此,在Mac, 我選擇了 Tableplus,相同地,安裝請參考 REFERENCE。(不過 Tableplus 好像不是 open-source, 只是提供一個功能受限—(只提供一個TABLE)—的免費版本,有時間再找一個好用的 open-source,也歡迎讀者推薦)。
Spring Boot 與 SQL 資料庫溝通的技術,稱作 JDBC,Java Database Connection。為了減少一回的份量,讓讀者和筆者都可以輕鬆一點,把這個主題拆分兩個部分,分兩回來說明:

  1. JDBC及資料庫的建立。
  2. 編程。

在這一回中,我們介紹如何透過 Spring Boot 連接 MariaDB,對於其他的資料庫,大家可以比照。在創建專案時,選擇 SQL / Spring Data JDBC 及 SQL / MySQL Driver, 為了 Web 的功能,我們也加入 Web / Spring Web,創建後,在 pom.xml (Maven) 中會有以下設定:

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-jdbc</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<scope>runtime</scope>
	</dependency>
	…
</dependencies>

連接 MariaDB 使用的類別為 JdbcTemplate,這個類別使用到的參數設定在 src/main/resources/application.properties,我們只需要設定這些參數,剩餘的部分,如何時進行連接等等, Spring boot 都默默完成了,我們就是享受這個成果。

spring.datasource.url=jdbc:mysql://localhost:3306/iron2019
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.http.encoding.force=true

iron2019是資料庫名稱,帳號(root),密碼(password),必須依實際狀況設定。在 driver-class-name中設定使用的資料庫,在早期的版本,使用 com.mysql.jdbc.Driver, 已經建議再不使用 (deprecated), 最後一行是編碼限制(通常設定為UTF-8)。 在執行之前,還要MariaDB 資料庫中創建表格(Create table),可以透過 MySQL Client,或是資料庫管理軟件 TablePlus (有兩件事要做:創建資料庫 & 創建表格)
SQL command for create table:

create table users (
id int not null auto_increment,
name varchar(255) not null,
email varchar(255) not null,
primary key(id)
);

TablePlus 執行的畫面如下:(免費的 TablePlus 只支援一個表格)。
https://ithelp.ithome.com.tw/upload/images/20191010/20120951mAF1XYXIwz.png
在這一回(與下一回)中,我們延用第 22 回的資料結構,只是在前面文章中我們用了一個在記憶體的 H2Database 資料庫,而在這一回裡,我們使用了 MariaDB,讀者可以作個比對。UserController.java, User.java 都可以延用,略作修改,例如 User.java 中拿掉了 @Entity 及 @GenerateValue,同時,我們把 name, email 的修飾語 final 都拿掉了,因為我們會在產生後設定其值
User.java:

public class User {
    public User() {
		super();
		this.name="unknown";
		this.email="unknown.email";
	}
    private long id;
    private String name;
    private String email;
}
Source > Generate Getters and Setters...
Source > Generate Constructor with Fields…
Source > Generate toString()…

最後 Source 那三行是用 Eclipse 自動生成相關的編碼。
在這一回中,我們就介紹到這裡,在下一回中我們再完成編碼,加以執行。

REFERENCE

Mac 用 Homebrew 安裝 MariaDB
HeidiSQL for Mac(Tableplus)


上一篇
競合三: 溝通 (Link/HTTP)
下一篇
瑪麗亞女士 (MariaDB)
系列文
美麗的邂逅-與安室....伊春30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言